﻿using System.Runtime.CompilerServices;

namespace HanoiTower
{
    internal class Program
    {
        /// <summary>
        /// 哈诺塔
        /// </summary>
        /// <param name="args"></param>
        /// 设三根柱子a,b,c，最终从a到b
        ///主程序，用来输入哈诺塔层数和输出
        static void Main(string[] args)
        {
            Console.WriteLine("请输入汉诺塔层数：");
            int floor = int.Parse(Console.ReadLine());
            Hanoi(floor, 'A', 'B', 'C');
        }
        ///自定义哈诺函数，用于移动
        public static void Hanoi(int floor, char a, char b, char c)
        {
            //如果只有一层，直接移动
            if (floor == 1)
                Console.WriteLine($"第{floor}层盘子从{a}移动到{b}");
            //两层以上
            else
            {
                //floor-1层从a移动到c
                Hanoi(floor - 1, a,c,b);
                //floor层移到b
                Console.WriteLine($"第{floor}层盘子从{a}移动到{b}");
                //floor-1层移到b
                Hanoi(floor - 1, c, b, a);
            }
        }
    }
}